{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e4d568fa-81a7-4374-911c-a8b817c941ff",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using matplotlib backend: module://matplotlib_inline.backend_inline\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal - length</th>\n",
       "      <th>sepal - width</th>\n",
       "      <th>petal - length</th>\n",
       "      <th>petal - width</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal - length  sepal - width  petal - length  petal - width\n",
       "0             5.1            3.5             1.4            0.2\n",
       "1             4.9            3.0             1.4            0.2\n",
       "2             4.7            3.2             1.3            0.2\n",
       "3             4.6            3.1             1.5            0.2\n",
       "4             5.0            3.6             1.4            0.2"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.linear_model import LinearRegression\n",
    "%matplotlib\n",
    "iris = load_iris()\n",
    "data = pd.DataFrame(iris.data)\n",
    "data.columns = ['sepal - length', 'sepal - width', 'petal - length', 'petal - width']\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "84df8e52-143c-4e8c-946d-abdc1bc151d8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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5pprfPo6hBsvqKio0IEDB2yPDx06pI8//ljdunVT7969A1hZcJoxY4aef/55vfrqq0pISFBJSYkkKTExUR06dAhwdcHnnnvu0YQJE5SamqqTJ0/qxRdfVEFBgd1VZ2iQkJBgt36rU6dO6t69O+u6nJgzZ44mTpyo3r17q7S0VA899JDKy8s1derUQJcWtO6++24NHz5cf/zjH3XjjTfqww8/1OLFi7V48eJAlxa0rFarli9frqlTpyo62sfxw0S7bdiwwZRk9zV16tRAlxaUHH1Wkszly5cHurSgdNttt5lpaWlmbGys2aNHD3PMmDHmunXrAl1WSLniiivMu+66K9BlBK2bbrrJ7NWrlxkTE2OmpKSYP/nJT8zdu3cHuqyg97//+7/moEGDzLi4OLNfv37m4sWLA11SUHv77bdNSea+fft8/lqGaZqmb+MTAACA/7CgGAAAhBXCDQAACCuEGwAAEFYINwAAIKwQbgAAQFgh3AAAgLBCuAEAAGGFcAMAAMIK4QZAUCooKJBhGPr222/b9TyjR4/WrFmzvFJTe3nrPQFwjXADwKdWrFihrl27BroMvwumUAVEGsINAAAIK4QbAE6NHj1ad9xxh+644w517dpV3bt313333aemLelqamr029/+Vuecc446deqkyy67TAUFBZIapmF+/vOfq6ysTIZhyDAM/f73v5ckrVq1SpmZmUpISFDPnj11yy23qLS01OfvyVW90ncjTW+//bb69++vzp0764c//KGKi4ttx9TV1enOO++0fSZz587V1KlTNWnSJEnStGnTtHHjRj3xxBO2911YWGg7f8eOHcrMzFTHjh01fPhw7du3z+fvG4gkhBsALj377LOKjo7WBx98oCeffFKPP/64lixZYtv/85//XO+9955efPFF7dq1SzfccIN++MMfav/+/Ro+fLgWLlyoLl26qLi4WMXFxZozZ46khpAxf/58ffLJJ1qzZo0OHTqkadOm+fz9uKq30alTp7RgwQKtXLlSmzZt0pEjR2x1S9Kjjz6qf/zjH1q+fLnee+89lZeXa82aNbb9TzzxhLKysnT77bfb3ndqaqpt/7333qvHHntM27dvV3R0tG677Tafv28govi87ziAkHXFFVeY/fv3N61Wq23b3Llzzf79+5umaZoHDhwwDcMwjx492uy8MWPGmDk5OaZpmuby5cvNxMTEVl/rww8/NCWZJ0+eNE3TNDds2GBKMr/55pt2v4e77rrLo3olmQcOHLDtf/rpp83k5GTb4+TkZPPPf/6z7XFdXZ3Zu3dv89prr3X4uo0a39P69ett215//XVTknn69Ol2vU8A32HkBoBLw4YNk2EYtsdZWVnav3+/6uvr9dFHH8k0TV144YXq3Lmz7Wvjxo36z3/+4/J5d+7cqWuvvVZpaWlKSEjQ6NGjJUlHjhxxq67s7Oxmr+kOd+vt2LGjzjvvPNvjXr162abMysrKdOzYMX3/+9+37Y+KitKQIUPcqkGSLr744mbPLckvU3JApIgOdAEAQpfValVUVJR27NihqKioZvtcBY7KykqNGzdO48aN06pVq9SjRw8dOXJE48ePV01NjVuv/eCDDzabKvJmvTExMc32GYbRbJ1R47amWu53penzNz6P1Wp1+3wArhFuALi0detWu8cXXHCBoqKiNHjwYNXX16u0tFQjR450eH5sbKzq6+ubbdu7d6+OHz+uRx55xLYWZfv27R7VlZSUpKSkJI/Ocafe1iQmJio5OVkffvih7Tnq6+u1c+dOXXrppbbjHL1vAP7BtBQAl4qKijR79mzt27dPL7zwgv7617/qrrvukiRdeOGFuvXWWzVlyhS98sorOnTokLZt26ZHH31Ub7zxhiQpPT1dFRUV+ve//63jx4/r1KlT6t27t2JjY/XXv/5VBw8e1Nq1azV//nyfvxd36nXHzJkzlZubq1dffVX79u3TXXfdpW+++abZaE56ero++OADFRYW6vjx44zMAH5EuAHg0pQpU3T69Gl9//vf14wZMzRz5kz98pe/tO1fvny5pkyZot/85jfq27evfvzjH+uDDz6wjcgMHz5c2dnZuummm9SjRw/96U9/Uo8ePbRixQq99NJLGjBggB555BEtWLDAL++ntXrdMXfuXN18882aMmWKsrKy1LlzZ40fP17x8fG2Y+bMmaOoqCgNGDDANu0GwD8M05OJYgARZfTo0br00ku1cOHCQJcS1KxWq/r3768bb7zRLyNQAFxjzQ0AeOjw4cNat26drrjiClVXV+upp57SoUOHdMsttwS6NABiWgoAPGaxWLRixQoNHTpUl19+uT799FOtX79e/fv3D3RpAMS0FAAACDOM3AAAgLBCuAEAAGGFcAMAAMIK4QYAAIQVwg0AAAgrhBsAABBWCDcAACCsEG4AAEBY+f85O15zKzfCiQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "x = data['petal - length'].values\n",
    "y = data['petal - width'].values\n",
    "x = x.reshape(-1,1)\n",
    "y = y.reshape(-1,1)\n",
    "x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=666)\n",
    "clf = LinearRegression()\n",
    "clf.fit(x_train,y_train)\n",
    "pre = clf.predict(x_test)\n",
    "plt.scatter(x_test,y_test,s = 50)\n",
    "plt.plot(x_test,pre,'r-',linewidth = 2)\n",
    "plt.xlabel('petal - length')\n",
    "plt.ylabel('petal - width')\n",
    "for idx, m in enumerate(x_test):\n",
    "    plt.plot([m,m],[y_test[idx],pre[idx]],'g-')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "aafcea41-e9e0-40b3-964c-5a4176748e62",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "系数： [[0.4118243]]\n",
      "截距： [-0.3571818]\n",
      "MAE:0.0529\n",
      "MSE:0.1676\n",
      "R^2:0.9117\n"
     ]
    }
   ],
   "source": [
    "print(u\"系数：\",clf.coef_ )\n",
    "print(u\"截距：\",clf.intercept_ )\n",
    "from sklearn.metrics import mean_squared_error as s_mean_squared_error\n",
    "from sklearn.metrics import mean_absolute_error as s_mean_absolute_error\n",
    "from sklearn.metrics import r2_score as s_r2_score\n",
    "print('MAE:%.4f'% s_mean_squared_error(y_test, pre))\n",
    "print('MSE:%.4f'% s_mean_absolute_error(y_test, pre))\n",
    "print('R^2:%.4f'% s_r2_score(y_test, pre))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "327bcf54-3bd6-478c-93ef-e145d33cb76f",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
